<!--
 * @Descripttion: 
 * @version: 
 * @Author: Ansel
 * @Date: 2020-02-17 12:41:52
 * @LastEditors: Ansel
 * @LastEditTime: 2020-04-11 18:53:58
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // ES5/ES6 的继承除了写法以外还有什么区别？
        //1.class 声明会提升，但不会初始化赋值。Foo 进入暂时性死区，类似于 let、const 声明变量。
        //2.class 声明内部会启用严格模式
        //3.class 的所有方法（包括静态方法和实例方法）都是不可枚举的。
        //4.class 的所有方法（包括静态方法和实例方法）都没有原型对象 prototype，所以也没有[[constructor]]，不能使用 new 来调用。
        //5.必须使用 new 调用 class。
        //6.class 内部无法重写类名。
        function Bar(){
            Bar = 'Baz';
            this.bar = 42;
        }
        const bar = new Bar();
        console.log(bar);

        class Foo{
            constructor(){
                this.foo = 42;
                // Foo = 'Fol';
            }
        }
        const foo = new Foo();
        Foo= 'Fol';
    </script>
</body>

</html>